home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / crazy8.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-06-18  |  7.4 KB  |  296 lines

  1. 10  REM Author Les Davids
  2. 20     DIM SUIT$(4),CARD$(52),DECK$(52)
  3. 30  DIM FIG$(5,5)
  4. 40   DEFINT A-Z
  5. 50   DIM DECK(52),PHAND$(26),CHAND$(26)
  6. 60   DIM TEST(52),OLDHAND$(25)
  7. 70  SCREEN 0,1:COLOR 0,2:CLS
  8. 80  KEY OFF
  9. 90  LOCATE 2,9
  10. 95  REM OUT 980,2: OUT 981,42
  11. 100   PRINT "C R A Z Y   E I G H T S"
  12. 110  DIM VALUE$(13),VALUE(13)
  13. 120  LOCATE 4,1
  14. 130  PRINT"The objective of the game is to get rid"
  15. 140  PRINT"of all your cards by placing them on"
  16. 150  PRINT"the discard pile."
  17. 160  PRINT"You can play a card if you have the "
  18. 170  PRINT"same suit, the same number (in which"
  19. 180  PRINT"case the suit changes), or at any time"
  20. 190  PRINT"you can play an eight. If you play an"
  21. 200  PRINT"eight you will be prompted for new suit (h,c,s,d)."
  22. 210  PRINT"If you cannot go, hit the space bar."
  23. 220  PRINT"You will then be dealt a new card."
  24. 230  PRINT
  25. 240  PRINT"Game will end at 100 points."
  26. 250  PRINT"The winner receives points from the"
  27. 260  PRINT"losers hand. Points are equal to "
  28. 270  PRINT"face value. Face cards are 10 each,"
  29. 280  PRINT"aces are worth 15."
  30. 290  LOCATE 22,15:INPUT "NAME ",N$
  31. 300  CLS: LOCATE 2,9
  32. 310  DATA "A","2","3","4","5","6","7"
  33. 320  DATA "8","9","0","J","Q","K"
  34. 330  DATA 15,2,3,4,5,6,7,8,9,10,10,10,10
  35. 340  FOR I=1 TO 13:READ VALUE$(I):NEXT I
  36. 350  FOR I=1 TO 13:READ VALUE(I):NEXT I
  37. 360  PRINT "C R A Z Y   E I G H T S"
  38. 370  LOCATE 5,2:PRINT"SCORE"
  39. 380  LOCATE 6,4:PRINT "COMPUTER";CSCORE
  40. 390  LOCATE 7,4:PRINT N$;PSCORE
  41. 400  FOR I=1 TO 40
  42. 410  LOCATE 9,I: PRINT CHR$(205)
  43. 420  NEXT I
  44. 430  REM ** shuffle cards
  45. 440  GOSUB 1510
  46. 450  REM ** deal cards
  47. 460  COLOR 7,7
  48. 470  FOR I = 1 TO 8
  49. 480    J=1+((I-1)*2)
  50. 490    PHAND$(I)=DECK$(J)
  51. 500    CHAND$(I)=DECK$(J+1)
  52. 510    NEXT I
  53. 520    NEXTCARD = 18
  54. 530  UPCARD$ = DECK$(17)
  55. 540    PCARDS=8
  56. 550  CCARDS=8
  57. 560  REM ** sort player's hand
  58. 570  SORTTEST=1
  59. 580  WHILE SORTTEST
  60. 590    SORTTEST=0
  61. 600    FOR I=1 TO PCARDS-1
  62. 610      CHAR1$=MID$(PHAND$(I),3)
  63. 620      CHAR2$=MID$(PHAND$(I+1),3)
  64. 630      IF CHAR1$>CHAR2$ THEN                      SWAP PHAND$(I),PHAND$(I+1)              : SORTTEST = 1
  65. 640      NEXT I
  66. 650      WEND
  67. 660  THE$="   ": GOSUB 2380
  68. 670  THE$=UPCARD$: GOSUB 2470
  69. 680  ROW=4:COL=19:GOSUB 2390
  70. 690  ROW=10
  71. 700  FOR I=1 TO 6
  72. 710  IF I>(PCARDS+1) THEN 760
  73. 720  IF PHAND$(I)=OLDHAND$(I) THEN 780
  74. 730  OLDHAND$(I)=PHAND$(I)
  75. 740  THE$=PHAND$(I): GOSUB 2470
  76. 750  COL=1+(6*(I-1)): GOSUB 2390
  77. 760  LOCATE 15,(2+((I-1)*6))
  78. 770  IF I<=PCARDS THEN PRINT I                            ELSE PRINT "  "
  79. 780  NEXT I
  80. 790  ROW=17
  81. 800  FOR I=7 TO (PCARDS+1)
  82. 810  J=I-6
  83. 820  IF PHAND$(I)=OLDHAND$(I) THEN 960
  84. 830  OLDHAND$(I)=PHAND$(I)
  85. 840  THE$=PHAND$(I): GOSUB 2470
  86. 850  COL=1+(6*(J-1)): GOSUB 2390
  87. 860  LOCATE 22,(2+((I-7)*6))
  88. 870  IF I=(PCARDS+1) THEN                       PRINT "  ": GOTO 960
  89. 880  IF I<10 THEN PRINT I
  90. 890  IF I = 10 THEN PRINT " A"
  91. 900  IF I = 11 THEN PRINT " B"
  92. 910  IF I = 12 THEN PRINT " C"
  93. 920  IF I = 13 THEN PRINT " D"
  94. 930  IF I = 14 THEN PRINT " E"
  95. 940  IF I = 15 THEN PRINT " F"
  96. 950  IF I = 16 THEN PRINT " G"
  97. 960  NEXT I
  98. 970  LOCATE 23,20:PRINT"ENTER YOUR PLAY"
  99. 980  IN$=INKEY$:IF IN$="" THEN 980
  100. 990  LOCATE 7,29:PRINT"           "
  101. 1000  LOCATE 23,20:PRINT"THINKING       "
  102. 1010  IF IN$<>" " THEN 1090
  103. 1020  IF TAKE=1 THEN 1430
  104. 1030  PCARDS=PCARDS+1
  105. 1040  IF NEXTCARD = 53 THEN 2870
  106. 1050  PHAND$(PCARDS)=DECK$(NEXTCARD)
  107. 1060  NEXTCARD=NEXTCARD+1
  108. 1070  TAKE = 1
  109. 1080  GOTO 570
  110. 1090  IF IN$>"9" THEN 1120
  111. 1100  IN=VAL(IN$)
  112. 1110  GOTO 1220
  113. 1120  IF IN$="a" THEN IN=10
  114. 1130  IF IN$="b" THEN IN=11
  115. 1140  IF IN$="c" THEN IN=12
  116. 1150  IF IN$="d" THEN IN=13
  117. 1160  IF IN$="e" THEN IN=14
  118. 1170  IF IN$="e" THEN IN=15
  119. 1180  IF IN$<"a" OR IN$>"e" THEN 1190            ELSE 1220
  120. 1190  LOCATE 23,20
  121. 1200  PLAY "mfo1fd":PRINT "WRONG CARD"
  122. 1210  GOTO 970
  123. 1220  IN$=PHAND$(IN)
  124. 1230  IF MID$(IN$,2,1)="8" THEN 1290
  125. 1240  IF MID$(IN$,1,2) = MID$(UPCARD$,1,2) THEN 1380
  126. 1250  IF MID$(IN$,3,1) = MID$(UPCARD$,3,1) THEN 1380
  127. 1260  LOCATE 23,20
  128. 1270  PRINT "WRONG CARD"
  129. 1280  GOTO 970
  130. 1290  LOCATE 23,20: PRINT"WHAT SUIT?"
  131. 1300  S$=INKEY$: IF S$="" THEN 1300
  132. 1310  IF S$ = "c" THEN 1360
  133. 1320  IF S$ = "d" THEN 1360
  134. 1330  IF S$ = "h" THEN 1360
  135. 1340  IF S$ = "s" THEN 1360
  136. 1350  GOTO 1300
  137. 1360  REM ** switch suit
  138. 1370  MID$(IN$,3,1)=MID$(S$,1,1)
  139. 1380  TAKE = 0
  140. 1390  UPCARD$ = IN$
  141. 1400  IF IN = PCARDS THEN 1420
  142. 1410  PHAND$(IN) = PHAND$(PCARDS)
  143. 1420  PCARDS = PCARDS - 1
  144. 1430  PHAND$(PCARDS+1) = "   "
  145. 1440  IF PCARDS=0 THEN 2750
  146. 1450  TAKE=0
  147. 1460  GOSUB 1870
  148. 1470  IF CCARDS = 0 THEN 2750
  149. 1480  TAKE=0
  150. 1490  GOTO 560
  151. 1500  END
  152. 1510  REM ******* shuffle routine ******
  153. 1520  LOCATE 6,29: PRINT"NEW GAME"
  154. 1530  TIM$=MID$(TIME$,4,2)
  155. 1540  TIM$=TIM$+MID$(TIME$,7,2)
  156. 1550  SEED=VAL(TIM$)
  157. 1560  RANDOMIZE(SEED)
  158. 1570  COUNT = 1
  159. 1580  WHILE COUNT < 53
  160. 1590     NUMBR=100*RND
  161. 1600     IF NUMBR > 52 THEN 1590
  162. 1610     IF NUMBR = 0 THEN 1590
  163. 1620    IF TEST(NUMBR) = 1 THEN 1590
  164. 1630    TEST(NUMBR) = 1
  165. 1640    DECK(COUNT) = NUMBR
  166. 1650    COUNT = COUNT + 1
  167. 1660    WEND
  168. 1670  IF PSCORE <>0 OR CSCORE<>0                 THEN 1820
  169. 1680  DATA "c","d","h","s"
  170. 1690  FOR I=1 TO 4
  171. 1700  READ SUIT$(I)
  172. 1710  NEXT I
  173. 1720  DATA " A"," 2"," 3"," 4"," 5"," 6"," 7"
  174. 1730  DATA " 8"," 9","10"," J"," Q"," K"
  175. 1740  FOR I = 1 TO 4
  176. 1750    FOR J = 1 TO 13
  177. 1760      N = J+((I-1)*13)
  178. 1770      READ CARD$(N)
  179. 1780      CARD$(N)=CARD$(N)+SUIT$(I)
  180. 1790      NEXT J
  181. 1800    RESTORE 1720
  182. 1810    NEXT I
  183. 1820  FOR I=1 TO 52
  184. 1830    DECK$(I) = CARD$(DECK(I))
  185. 1840  PLAY "mbl64t255o0aa-p64"
  186. 1850    NEXT I
  187. 1860  RETURN
  188. 1870  REM ** computer section
  189. 1880  REM ** sort computer's hand
  190. 1890  TAKE=0
  191. 1900  SORTTEST=1
  192. 1910  WHILE SORTTEST
  193. 1920    SORTTEST=0
  194. 1930    FOR I=1 TO CCARDS-1
  195. 1940      CHAR1$=MID$(CHAND$(I),3)
  196. 1950      CHAR2$=MID$(CHAND$(I+1),3)
  197. 1960      IF CHAR1$>CHAR2$ THEN                      SWAP CHAND$(I),CHAND$(I+1)              : SORTTEST = 1
  198. 1970      NEXT I
  199. 1980      WEND
  200. 1990  REM ** look for suit
  201. 2000  FOR IN=1 TO CCARDS
  202. 2010    S$=MID$(UPCARD$,3,1)
  203. 2020    T$=MID$(CHAND$(IN),3,1)
  204. 2030    IF S$=T$ AND                               MID$(CHAND$(IN),2,1)<>"8"                THEN 2330
  205. 2040    NEXT IN
  206. 2050  REM ** look for number
  207. 2060  FOR IN=1 TO CCARDS
  208. 2070    S$=MID$(UPCARD$,1,2)
  209. 2080    T$=MID$(CHAND$(IN),1,2)
  210. 2090    IF S$=T$ THEN 2330
  211. 2100    NEXT IN
  212. 2110  REM ** look for eight
  213. 2120  FOR IN = 1 TO CCARDS
  214. 2130    IF MID$(CHAND$(IN),2,1)="8"                THEN 2250
  215. 2140    NEXT IN
  216. 2150  REM ** take another card
  217. 2160  IF TAKE = 1 THEN TAKE=0: RETURN
  218. 2170  TAKE = 1
  219. 2180  CCARDS=CCARDS+1
  220. 2190  CHAND$(CCARDS)=DECK$(NEXTCARD)
  221. 2200  NEXTCARD=NEXTCARD+1
  222. 2210  LOCATE 6,29:PRINT "CARDS ";CCARDS
  223. 2220  LOCATE 7,29: PRINT"TOOK CARD"
  224. 2230  IF NEXTCARD = 53 THEN 2870
  225. 2240  GOTO 1900
  226. 2250  REM ** space for playing 8
  227. 2260  IF IN = 1                                  THEN S$=MID$(CHAND$(2),3,1)             ELSE S$=MID$(CHAND$(1),3,1)
  228. 2270  MID$(CHAND$(IN),3,1)=S$
  229. 2280  LOCATE 7,29
  230. 2290  IF S$="c" THEN PRINT"CLUBS    "
  231. 2300  IF S$="d" THEN PRINT"DIAMONDS "
  232. 2310  IF S$="h" THEN PRINT"HEARTS   "
  233. 2320  IF S$="s" THEN PRINT"SPADES   "
  234. 2330  UPCARD$=CHAND$(IN)
  235. 2340  IF IN <> CCARDS THEN                       CHAND$(IN)=CHAND$(CCARDS)
  236. 2350  CCARDS=CCARDS-1
  237. 2360  LOCATE 6,29:PRINT "CARDS ";CCARDS
  238. 2370  IF CCARDS=1 THEN LOCATE 7,29:              PRINT"LAST CARD":SOUND 400,5
  239. 2380  RETURN
  240. 2390  REM ** print a card
  241. 2400  FOR SI=1 TO 5
  242. 2410  FOR SJ = 1 TO 5
  243. 2420  LOCATE (ROW+(SI-1)),(COL+(SJ-1))
  244. 2430  PRINT FIG$(SI,SJ)
  245. 2440  NEXT SJ,SI
  246. 2450  COLOR 0,2
  247. 2460  RETURN
  248. 2470  REM ** create figure
  249. 2480  IF PASS = 1 THEN 2640
  250. 2490  PASS=1
  251. 2500  FIG$(2,4)=" "
  252. 2510  FIG$(3,4)=" "
  253. 2520  FIG$(3,2)=" "
  254. 2530  FIG$(4,2)=" "
  255. 2540  FIG$(1,1)=CHR$(201)
  256. 2550  FIG$(1,5)=CHR$(187)
  257. 2560  FIG$(5,1)=CHR$(200)
  258. 2570  FIG$(5,5)=CHR$(188)
  259. 2580  FOR SI=1 TO 3
  260. 2590  FIG$(1,SI+1)=CHR$(205)
  261. 2600  FIG$(5,SI+1)=CHR$(205)
  262. 2610  FIG$(SI+1,1)=CHR$(186)
  263. 2620  FIG$(SI+1,5)=CHR$(186)
  264. 2630  NEXT SI
  265. 2640  IF THE$="   " THEN FOR SI=1 TO 5 :         FOR SJ=1 TO 5:COLOR 7,2:                FIG$(SI,SJ) = " ": NEXT SJ,SI:          PASS=0: RETURN
  266. 2650  COLOR 7,2:FIG$(2,3)=" "
  267. 2660  FIG$(4,3)=" "
  268. 2670  IF MID$(THE$,1,1)=" "                      THEN FIG$(2,2)=MID$(THE$,2,1):               FIG$(4,4)=FIG$(2,2)                ELSE FIG$(2,2)="1":FIG$(2,3)="0":            FIG$(4,3)="1":FIG$(4,4)="0"
  269. 2680  S$=MID$(THE$,3,1)
  270. 2690  IF S$="d" THEN FIG$(3,3)=CHR$(4):COLOR 4,7
  271. 2700  IF S$="c" THEN FIG$(3,3)=CHR$(5):COLOR 0,7
  272. 2710  IF S$="h" THEN FIG$(3,3)=CHR$(3):COLOR 4,7
  273. 2720  IF S$="s" THEN FIG$(3,3)=CHR$(6):COLOR 0,7
  274. 2730  RETURN
  275. 2740  END
  276. 2750  LOCATE 7,29
  277. 2760  IF PCARDS=0                                THEN PRINT"!!YOU WIN"                   ELSE PRINT"!! I WIN "
  278. 2770  FOR SI=1 TO PCARDS
  279. 2780  SPHAND$=SPHAND$+PHAND$(SI)
  280. 2790  FOR SJ=1 TO 13
  281. 2800  IF MID$(PHAND$(SI),2,1)=MID$(VALUE$(SJ),1,1)    THEN CSCORE=CSCORE+VALUE(SJ)
  282. 2810  NEXT SJ,SI
  283. 2820  FOR SI=1 TO CCARDS
  284. 2830  SCHAND$=SCHAND$+CHAND$(SI)
  285. 2840  FOR SJ=1 TO 13
  286. 2850  IF MID$(CHAND$(SI),2,1)=MID$(VALUE$(SJ),1,1)    THEN PSCORE=PSCORE+VALUE(SJ)
  287. 2860  NEXT SJ,SI
  288. 2870  FOR SI=1 TO 52
  289. 2880  TEST(SI)=0
  290. 2890  NEXT SI
  291. 2900  IF PSCORE<100 AND CSCORE <100              THEN 370
  292. 2910  LOCATE 6,4:PRINT "COMPUTER";CSCORE
  293. 2920  LOCATE 7,4:PRINT N$;PSCORE
  294. 2930  PRINT"thank you"
  295. 2940  END
  296.